package com.yuma.ai.controller;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

@RestController
public class ChatController {

    @Autowired
    private ChatClient client;

    /*public ChatController(ChatClient.Builder clientBuilder) {
        // 角色预设给AI设置的
        clientBuilder.defaultSystem("你是御码教育的一名老师，你精通Java开发，你的名字叫王莉。");
        this.client = clientBuilder.build();
    }*/

    // 1.实现一个简单的聊天功能
    @GetMapping("/chat")
    public String chat(@RequestParam(value="msg", defaultValue = "你是谁") String msg) {
        // 1.设置提示词
        return client.prompt()  //提示词
                 .user(msg)  //用户输入信息
                 .call()   // 请求大模型,问题都生成之后才显示
                 .content();  // 返回文本
    }

    @GetMapping(value = "/stream",produces = "text/html;charset=utf-8")
    public Flux<String> stream(@RequestParam(value="msg", defaultValue = "你是谁") String msg) {
        // 1.设置提示词
        return client.prompt()  //提示词
                .user(msg)  //用户输入信息
                .stream()   // 请求大模型，流式是逐个字符输出
                .content();  // 返回文本
    }
}
